#include <iostream>
#include <vector>

using namespace std;

class Solution
{
public:
    static int minSubArrayLen(int target, vector<int> &nums)
    {
        //自己写的
        // int left = 0;
        // int right = 0;
        // int sum = nums[left];
        // int len = 0;
        // if (sum >= target && left <= right)
        // {
        //     len = 1;
        // }
        // else
        // while (right < nums.size())
        // {
        //     // 逻辑：
        //     // 先设置left right两个同向双指针
        //     // 然后判断
        //     //  cout << "sum: " << sum << " len: " << len << endl;
        //     while (sum < target && right < nums.size())
        //     {
        //         sum += nums[++right];
        //     }
        //     if(right >= nums.size()) break;
        //     while (sum >= target && left <= right)
        //     {
        //         // cout << "sum: " << sum << endl;
        //         if (!len)
        //             len = right - left + 1;
        //         else if (len && len > right - left + 1)
        //             len = right - left + 1;
        //         sum -= nums[left++];
        //     }
        // }
        // return len;
        //优化后
        int sum = 0, ret = INT_MAX;
        for (int left = 0, right = 0; right < nums.size(); right++)
        {
            sum += nums[right];
            while (sum >= target)
            {
                ret = min(ret, right - left + 1);
                sum -= nums[left++];
            }
        }
        return ret == INT_MAX ? 0 : ret;
    }
};

int main()
{
    // vector<int> vc = {2, 3, 1, 2, 4, 3};
    // vector<int> vc = {1, 4, 4};
    vector<int> vc = {1, 1, 1, 1, 1, 1, 1, 1};
    // cout << Solution::minSubArrayLen(7, vc) << endl;
    // cout << Solution::minSubArrayLen(4, vc) << endl;
    cout << Solution::minSubArrayLen(11, vc) << endl;

    return 0;
}